package com.example.service.collar;

import com.example.dto.business.PetBusinessDTO;
import com.example.pojo.*;

import java.util.List;

/**
 * @author w
 */
public interface CollarService {
    /**
     * 获取ip绑定的用户id，若未绑定返回null
     * @param ip 项圈ip
     * @return userId
     */
    Integer getBindedUserId(String ip);

    /**
     * 用户插入项圈
     * @param userId 用户id
     * @param collar 项圈
     */
    void insertCollar(int userId, Collar collar);

    /**
     * 获取用户所有项圈
     * @param userId 用户id
     * @return 用户所有的项圈
     */
    List<Collar> getUserAllCollars(int userId);

    /**
     * 获取对应ip项圈的历史记录
     * @param ip 项圈ip
     * @param time
     * @return 历史记录信息
     */
    List<CollarMsg> getHistoryCollarMsgs(String ip,String time);

    /**
     * 获取最近的项圈数据，用于实时显示信息
     * @param ip 项圈ip
     * @return 最近一次的项圈信息
     */
    CollarMsg getRecentlyCollarMsg(String ip);

    /**
     * 设置项圈获取硬件信息的频率
     * @param ip 项圈ip
     * @param time 频率
     */
    void setCollarMsgSendFrequency(String ip,int time);

    /**
     * 获取目前所有公开的宠物位置,请求者位置为一个数据
     * @param ip 请求者ip
     * @return 所有位置信息
     */
    List<MapMsg> getPublicPetMap(String ip);

    /**
     * 根据项圈ip获取绑定的宠物
     * @param ip 项圈ip
     * @return 宠物信息
     */
    PetBusinessDTO getPetByIp(String ip);

    /**
     * 绑定项圈与用户
     * @param collarId 项圈ip
     * @return 是否成功
     */
    boolean bindCollarWithPet(Collar collarId);

    /**
     * 取消绑定项圈和宠物
     * @param collar petid和collarid信息
     * @return 是否成功
     */
    boolean cancelBind(Collar collar);
}
